package io;


import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

/*
 * IO:Input和Output，即输入和输出
 * Java将输入和输出都用Stream表达，分为输入流和输出流，
 * 我们可以将他们想为链接我们的程序和另一个设备之间的管道，通过他们可以读写设备
 * Java将输入流和输出流都定义了两个对应的超类，InputStream和OutputStream
 * 1）InputStream:
 *      输入流，方向是从外界到程序的方向，用于读取数据的流，是一个抽象类，定义读取字节的相关方法
 * 2)OutputStream:
 *      输出流，方向是从程序到外界的方向，用于写出数据的流，是一个抽象类，定义了写出字节的相关方法
 *
 * 文件流：FileInputStream和FileOutputStream
 * 文件流继承自InputStream和OutputStream,用于对文件进行读写操作
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        //文件输出流有两个常用的构造器：
        //1)FileOutputStream(String fileName)
        //2)FileOutputStream(File file)
        //文件流创建时如果指定的文件不存在则会自动创建，前提是该文件所在的目录必须是存在的，若不存在则发生异常
        File file = new File("fos.dat");
        FileOutputStream fos = new FileOutputStream(file);
        //FileOutputStream fos = new FileOutputStream("fos.dat");
        //OutputStream(所有字节流的超类)都有write方法
        //fos.write(1);//write写入的是二进制的低八位字节,,范围是0~255，超出255取低八位数据会有损失
        //fos.write(2);
        fos.write(-1);//当只录入-1时，之前的数据会被覆盖
        fos.write(256);
        System.out.println("写出完毕");
        fos.close();  //释放流
    }
}
